人们为什么不使用Python3?

关于Python 3


Python 社区的朋友和开发者们,咱们一起聊聊Python3吧。Python3在2008年12月3日首次发布。当时广泛的说法是:程序员接受Python3将是一个漫长的过程,这个过程被预期为五年。现在,我们刚刚度过了这个标志性的5年。


在Python 3发布起初以及随后的几年里,我感到非常兴奋,像个传教士一样宣传它,把自己的项目移植到它上面去。在过去一两年里,我启动的每一个新项目从一开始就采用Python 3开发。


最近半年,我一直在反思Python3的地位,兴奋逐渐被失落取代。


人们通常的看法是:在Python3流行的头几年,一些开源项目将会跟随潮流,随之而来的Python3浪潮,将会像开闸的洪水一样一发而不可收。在用Python语言写的Web开源框架Django的世界里,这种看法意味着我们需要一个Web服务器网关接口(WSGI)规范,使数据库驱动用Python3编写,接着我们开发人员才可以向Python3转变,最后才能使我们的用户接受Python 3。


当下,所有必备的条件都有了:Django(以及很多Django上的第三方App)现在已经支持Python3了,NumPy以及其他很多科学计算库都支持Python3,Python本身的几个新版本也都已经发布了。但是,用户们仍旧不使用Python3。


看一看Python包的下载统计,我们可以发现:Python3包下载量占不到2%。更糟糕的是,几乎没有代码是为Python3而写的。当我说我所有的新代码支持Python3,但是我却用Python2编译器在本地运行,我测试时,也是用Python2编译器。 TrivisCI用Python3为我运行了这些代码,当然,我的代码不全是用Python3写的。拥有大规模Python代码库的公司,我所了解的,没有一个公司写Python 3代码,并且基本上没有一个在考虑将他们的代码库向Python3转变。


从Python3.1时代开始,人们经常说的是,Python3新的特性和标准库的新特性将会作为激励人们升级Python3的动力。不要误会!Python3.3中确实有一些很酷的东西,但事实上,99%的人却无法用到这些功能。所以,当给别人说:“Python3中有很多好功能”,我实际上在心里说:“去你妈的,骗你的!”,因为对用户来讲,状况根本没有改观,兼容性问题依然存在。


除了上面所提到的这些,有一点对Python自身的发展也有极其恶劣的影响,那就是“没有用户反馈”这一环节。Python3仅仅在被较早接受它的人使用,这个事实意味着来自用户的对于新功能的反馈几乎没有,即使有,这一小部分人的意见也不能完全代表整个Python社区。当我们对Python3.X系列研究越深,它反而会变得越糟糕。如今,我们正在其他特性上开发新的功能,但是可惜的是,这些功能未能受到实际的广泛使用。


人们为什么不使用Python3?


首先,我认为是缺乏紧迫感。许多年前,在我还不知道如何编程的时候,使Python 3版本和Python 2版本并存的决议已经存在。回想起来,这是一个错误,这导致Python社区彻底缺乏进步的紧迫感,这种紧迫感的匮乏逐渐使进步意识荡然无存。


第二,我觉得Python 3从根本上来讲很无趣,这使得掌握它的人很少。它也没有人们想要的“big ticket items”,像移除GIL或追求更优良的性能(为了追求性能,多大会选择PyPy)。反而,它有许多新库和小的调整,很多有经验的Python开发者们总会习惯性避免这些不一致的地方。当然,不管需要付出多么长的时间去升级,人们的开发也不会停下来。即使Python2看起来要在这里待一段时间,这也阻止不了他们开发的脚步。



我们现在身处何地?


总之,不是一个幸福的地方。首先,我认为,我们很多人需要切实认识到Python3的现状。尤其是这样的事实:在过去的几年里,对于普通的Python开发人员而言,Python语言没有变得更好。对我们Python社区而言,使Python 2和Python 3走两条不同道路是错误的,我们需要把它们整合在一起。 我有一个想法:发布一款Python 2.8, 修补Python 3的每个新特征。同时弃用所有向后兼容方式不能改变的东西,例如,str + unicode将产生一条警告,同样的,没有from _ _future_ _import unicode_literals的所有文件也会产生警告。用户需要能够赶上连续的升级过程,Python 3破坏了这个过程,我们来解决它。这只是我的想法,我们需要更多的想法来建起Python 2和Python 3之间的桥梁,因为随着每个Python3新版本的发布,它们间的鸿沟会越来越大。


感谢Maciej Fijalkowski和其他人的评论。不用说,剩下的是鄙人的拙见。


来源于微信公众号 python程序员

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值